package cn.edu.pzhu.javaweb.dao;
import java.sql.Connection;
import java.util.List;

public interface BaseDao<T, ID> {

    /**
     * 新增实体
     * @param entity 要新增的实体对象
     * @return 新增成功的记录数
     */
    int insert(T entity);
    int insert(T entity,Connection con);

    /**
     * 根据主键删除
     * @param id 主键值
     * @return 删除成功的记录数
     */
    int deleteById(ID id);

    /**
     * 更新实体
     * @param entity 要更新的实体对象（包含主键）
     * @return 更新成功的记录数
     */
    int update(T entity);

    /**
     * 根据主键查询
     * @param id 主键值
     * @return 对应的实体对象，若不存在则返回null
     */
    T selectById(ID id);

    /**
     * 查询所有实体
     * @return 所有实体的列表
     */
    List<T> selectAll();

    /**
     * 批量插入
     * @param entities 实体对象集合
     * @return 插入成功的记录数
     */
    int batchInsert(List<T> entities);

    /**
     * 批量删除
     * @param ids 主键集合
     * @return 删除成功的记录数
     */
    int batchDelete(List<ID> ids);
}

